package edu.unf.cen6940.dao;

import edu.unf.cen6940.domain.Student;

import java.util.Set;

import org.skyway.spring.util.dao.JpaDao;

import org.springframework.dao.DataAccessException;

/**
 * DAO to manage Student entities.
 * 
 */
public interface StudentDAO extends JpaDao<Student> {

	/**
	 * JPQL Query - findStudentByStudentId
	 *
	 */
	public Student findStudentByStudentId(Integer studentId) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByStudentId
	 *
	 */
	public Student findStudentByStudentId(Integer studentId, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByCurrentPositionContaining
	 *
	 */
	public Set<Student> findStudentByCurrentPositionContaining(String currentPosition) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByCurrentPositionContaining
	 *
	 */
	public Set<Student> findStudentByCurrentPositionContaining(String currentPosition, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByYearGraduated
	 *
	 */
	public Set<Student> findStudentByYearGraduated(Integer yearGraduated) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByYearGraduated
	 *
	 */
	public Set<Student> findStudentByYearGraduated(Integer yearGraduated, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByEmail
	 *
	 */
	public Set<Student> findStudentByEmail(String email) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByEmail
	 *
	 */
	public Set<Student> findStudentByEmail(String email, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByNnumber
	 *
	 */
	public Set<Student> findStudentByNnumber(String nnumber) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByNnumber
	 *
	 */
	public Set<Student> findStudentByNnumber(String nnumber, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByGraduated
	 *
	 */
	public Set<Student> findStudentByGraduated(String graduated) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByGraduated
	 *
	 */
	public Set<Student> findStudentByGraduated(String graduated, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByFirstNameContaining
	 *
	 */
	public Set<Student> findStudentByFirstNameContaining(String firstName) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByFirstNameContaining
	 *
	 */
	public Set<Student> findStudentByFirstNameContaining(String firstName, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByPrimaryKey
	 *
	 */
	public Student findStudentByPrimaryKey(Integer studentId_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByPrimaryKey
	 *
	 */
	public Student findStudentByPrimaryKey(Integer studentId_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByLastName
	 *
	 */
	public Set<Student> findStudentByLastName(String lastName) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByLastName
	 *
	 */
	public Set<Student> findStudentByLastName(String lastName, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByLastNameContaining
	 *
	 */
	public Set<Student> findStudentByLastNameContaining(String lastName_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByLastNameContaining
	 *
	 */
	public Set<Student> findStudentByLastNameContaining(String lastName_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByNnumberContaining
	 *
	 */
	public Set<Student> findStudentByNnumberContaining(String nnumber_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByNnumberContaining
	 *
	 */
	public Set<Student> findStudentByNnumberContaining(String nnumber_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findAllStudents
	 *
	 */
	public Set<Student> findAllStudents() throws DataAccessException;

	/**
	 * JPQL Query - findAllStudents
	 *
	 */
	public Set<Student> findAllStudents(int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByCurrentPosition
	 *
	 */
	public Set<Student> findStudentByCurrentPosition(String currentPosition_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByCurrentPosition
	 *
	 */
	public Set<Student> findStudentByCurrentPosition(String currentPosition_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByMajorContaining
	 *
	 */
	public Set<Student> findStudentByMajorContaining(String major) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByMajorContaining
	 *
	 */
	public Set<Student> findStudentByMajorContaining(String major, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByFirstName
	 *
	 */
	public Set<Student> findStudentByFirstName(String firstName_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByFirstName
	 *
	 */
	public Set<Student> findStudentByFirstName(String firstName_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByMajor
	 *
	 */
	public Set<Student> findStudentByMajor(String major_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByMajor
	 *
	 */
	public Set<Student> findStudentByMajor(String major_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByGraduatedContaining
	 *
	 */
	public Set<Student> findStudentByGraduatedContaining(String graduated_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByGraduatedContaining
	 *
	 */
	public Set<Student> findStudentByGraduatedContaining(String graduated_1, int startResult, int maxRows) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByEmailContaining
	 *
	 */
	public Set<Student> findStudentByEmailContaining(String email_1) throws DataAccessException;

	/**
	 * JPQL Query - findStudentByEmailContaining
	 *
	 */
	public Set<Student> findStudentByEmailContaining(String email_1, int startResult, int maxRows) throws DataAccessException;
	
	/**
	 * Search by term
	 * */
	public Set<Student> searchByTerm(String term) throws DataAccessException;

}